相信一定有些人有發現,為什麼我們編輯的 view.html.erb完全沒有一個html檔案的基本骨幹如
、、等等tag。
這是因為rails預設將這些樣板(如index.html.erb、edit.html.erb⋯⋯等等)套用了一個公用的版型(Layout)
這個Layout是在我們新增這個專案的時候自動產生的,預設的位置為app/views/layouts/application.html.erb,讓我們看看它的內容:
<title>Guestbook</title>
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
<%= csrf_meta_tags %>
<%= yield %>
其中 中間的 <%= yield %> 這個區塊會取代為我們編輯的內容,其他部分都是固定的。
我們可以修改這個Layout的內容,讓它隨著不同頁面顯示不同資訊,例如:
將
<title>Guestbook</title>
這邊改成
<title> <%= @page_title || Guestbook %> </title>
並在show這個action設定@page_title的值
def show
@guest = Guest.find(params[:id])
@page_title = @guest.title
end
這樣當我們連到show的頁面時,網頁顯示的title就會變成那個物件的title,而其他沒有給@page_title值的頁面,就會仍然顯示Guestbook。